package com.dhnsoft.util;

import com.dhnsoft.game.Bullet;
import com.dhnsoft.game.Explode;
import com.dhnsoft.tank.EnemyTank;
import com.dhnsoft.tank.Tank;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description
 * @ClassName TanksPool
 * @Author dhn
 * @date 2020.11.19 17:46
 */
/*
* 坦克池
* */
public class EnemyTanksPool {
    public static final int DEFAULT_POOL_SIZE=20;
    public static final int POOL_MAX_SIZE=20;
    //用于保存所有的坦克的容器
    private static List<Tank> pool = new ArrayList<>();
    //在类加载的时候创建200个子弹对象添加到容器中
    static {
        for (int i = 0; i <DEFAULT_POOL_SIZE ; i++) {
            pool.add(new EnemyTank());
        }
    }

    /**
     * 从池子中获取一个子弹对象
     * */
    public static Tank get(){
        Tank tank = null;
        //池塘被掏空了
        if(pool.size()==0){
            tank=new EnemyTank();
        }else {//池塘中还有对象,拿走第一个位置的子弹对象
            tank=pool.remove(0);
        }
        //System.out.println("从对象池中获取一个对象，剩余:"+pool.size());
        return tank;
    }
    //子弹被销毁的时候，归还到池塘中
    public static void theReturn(Tank tank){
        if(pool.size()==POOL_MAX_SIZE){
            return;
        }
        pool.add(tank);
    }
}
